Distributed data processing systems have become very popular in the last years, especially thanks to the widespread diffusion of the Internet. The Internet is a global network with a client/server architecture, in which a great number of users access shared resources managed by server computers (through their own client computers).
Those services typically involve the downloading of a large amount of information from the servers to the clients. In this context, caching techniques are commonly used to improve the speed of the process and also reduce Internet traffic. A cache is a structure (being closer to the client than the server is), which stores information temporarily; in this way, when the same information is requested again, it can be obtained from the cache rather than the server.
For example, proxy servers are interposed between the clients and the actual servers; each proxy is provided with a local cache. The proxy receives any request for an Internet service from associated clients (for example, to fetch a desired web page). The proxy then verifies whether the requested web page is already available in its local cache. If so, the web page is returned to the client without needing to forward the request to the server (otherwise, the proxy addresses the request to the server on behalf of the client).
Another solution known in the art consists of distributing frequently accessed information to cache servers that are periodically refreshed; each cache server is arranged relatively close to the clients, and typically within a corporate network. Even in this case, successive requests for the same information can be satisfied by the cache servers directly without requiring any access to the servers.
However, none of the solutions described above can be applied when the downloading of the information must be controlled by the server directly. A typical scenario is the distribution of valuable information (such as software products) from the server to the client (for example, during an e-commerce transaction). In this case, it is evident that the software products must be downloaded only from the server to the clients that have been authorized. Conversely, the above-described caching techniques would result in unaccounted distribution and use of the software products (with corresponding unpaid royalties for their publishers).
Therefore, in the above-described situation the requested information must be always provided by the server directly. As a result, the process is extremely time-consuming (especially when the server is far away from the client and/or a relatively slow connection is available). Moreover, this causes an increment of the traffic on the Internet, with a detrimental effect on its performance. An additional drawback results from the fact that the high distance between the client and the server (in terms of either physical space or number of interposed devices) increases the risk of interruption of the connection; in this case, the process must be repeated with the transmission of additional information.